﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Windows.Forms;
using System.Xml;
using System.IO;



namespace GenIX
{

    //<MENU>
    //===============================ОБРАБОТЧИКИ ДЛЯ ГЛАВНОГО МЕНЮ===========================================
    //</MENU>
    public partial class NewXML : Form
    {
        //<INITIALISATION>
        //инициализация формы создания нового документа и установка фильтра расширений в диалоге 
        //</INITIALISATION>
        public NewXML()
        {
            InitializeComponent();
            saveFileDialog1.Filter = "xml|*.xml";
            Styleform.SelectElement(this, Styleform.choseStyleName);
        }
        //<CREATE>
        //создание корректного файла XML и его загрузка в документ
        //</CREATE>
        public bool CreateFile()
        {
            saveFileDialog1.FileName = string.Empty;
            if (saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                EraseAllFields(0, null);
                checkBox1.Enabled = true;
                numericUpDown1.Enabled = true;

                FileName = saveFileDialog1.FileName;
                using (System.IO.FileStream fs = System.IO.File.Create(FileName)) ;
                toolStripStatusLabel1.Text = "Файл: " + FileName;
                XmlWriterSettings settings = new XmlWriterSettings();
                settings.OmitXmlDeclaration = true;
                //<TAB>
                // включаем отступ для элементов XML документа
                // (позволяет наглядно изобразить иерархию XML документа)
                //</TAB>
                settings.Indent = true;
                settings.IndentChars = "    ";
                //<NEW_LINE>
                // задаем переход на новую строку
                //</NEW_LINE>
                settings.NewLineChars = "\n";
                //<DECLARATION>
                // Нужно ли опустить строку декларации формата XML документа
                // речь идет о строке вида "?xml version="1.0" encoding="utf-8"?"
                //</DECLARATION>
                settings.OmitXmlDeclaration = false;
                using (XmlWriter output = XmlWriter.Create(FileName, settings))
                {
                    //<OPEN_TAG>
                    // Создали открывающийся тег
                    //</OPEN_TAG>
                    output.WriteStartElement("ROWS");
                    output.WriteEndElement();
                    //<FLUSHING>
                    // Сбрасываем буфферизированные данные
                    //</FLUSHING>
                    output.Flush();
                    //<CLOSE_OUTPUT>
                    // Закрываем фаил, с которым связан output
                    //</CLOSE_OUTPUT>
                    output.Close();
                }
                Doc.Load(FileName);

                toolStripMenuItem2.Text = FileName;
                toolStripMenuItem2.Checked = true;


                IncFieldButton.Enabled = true;
                DecFieldButton.Enabled = true;
                EraseAllFieldsButton.Enabled = true;

                treeView1.Nodes.Clear();
                tnode = treeView1.Nodes.Add(FileName);

                CurNode = treeView1.Nodes[0];
                toolTip1.Hide(treeView1);
                return true;
            }
            else { return false; };
        }

        //<MENU_CLOSE>
        //пункт верхнего меню "Закрыть"
        //</MENU_CLOSE>
        private void ExitForm(object sender, EventArgs e)
        {
            if (FileName != string.Empty)
                if ((DTDexists == false) & (File.Exists(Path.GetDirectoryName(FileName) + "\\ROWS.dtd")))
                    File.Delete(Path.GetDirectoryName(FileName) + "\\ROWS.dtd");
                
            Close();
            
        }

        //<CLOSE_CUR>
        //закрыть текущий файл
        //</CLOSE_CUR>
        private void CloseCurrentFile(object sender, EventArgs e)
        {
            EraseAllFields(0, e);

            if (FileName != string.Empty)
                if ((DTDexists == false) & (File.Exists(Path.GetDirectoryName(FileName) + "\\ROWS.dtd")))
                {
                    File.Delete(Path.GetDirectoryName(FileName) + "\\ROWS.dtd");
                }

            FileName = string.Empty;
            toolStripMenuItem2.Checked = false;
            toolStripMenuItem2.Text = "(нет файла)";
            IncFieldButton.Enabled = false;
            DecFieldButton.Enabled = false;
            EraseAllFieldsButton.Enabled = false;
            checkBox1.Enabled = false;
            numericUpDown1.Enabled = false;
            treeView1.Nodes.Clear();
            toolStripStatusLabel1.Text = string.Empty;
            toolTip1.Show("Укажите путь к файлу", treeView1);
            DTDwritten = false;
        }
    }
}